package com.lg.patter.behavior.observed.callback;


/**
 * 回调函数测试
 *
 * @author by Mr. Li 2020/6/11 13:01
 */
public class Main {
    public static void main(String[] args) {
        Caller caller = new Caller();
        caller.call(() -> {
            System.out.println("callback let`s go");
        });
         /*
        跟线程的调用有点类似哈，那么是否可以推测线程就是一个回调模式
        线程是回调者，Runnable就是一个回调接口。
     */

        // 测试 事件的监听
        EventSource eventSource = new EventSource(); // 回调动作

        eventSource.addListener(eventObject -> {
            eventObject.doEvent();
            if (eventObject.getSource().equals("closeWindows")) {
                System.out.println("doClose");
            }
        });

        /**
         * 传入 openWindows事件，通知listener，事件监听器，
         *  对open事件感兴趣的listener将会执行
         */
        eventSource.notifyListenerEvent(new EventObject("closeWindows"));
    }


}
